package cn.ycc1.boot3redisson.util;

import org.springframework.expression.Expression;
import org.springframework.expression.ExpressionParser;
import org.springframework.expression.spel.standard.SpelExpressionParser;
import org.springframework.expression.spel.support.StandardEvaluationContext;

import java.util.Map;

/**
 * spel工具类
 * @author ycc
 * @date 2024/7/31
 */
public class SpELUtil {

    /**
     * spel转换
     * @param spelExpression
     * @param variables
     * @param clazz
     * @param <T>
     * @return
     */
    public static <T> T parse(String spelExpression, Map<String, Object> variables, Class<T> clazz) {
        ExpressionParser parser = new SpelExpressionParser();
        StandardEvaluationContext context = new StandardEvaluationContext();
        context.setVariables(variables);
        Expression exp = parser.parseExpression(spelExpression);
        return exp.getValue(context, clazz);
    }
}
